1 POKE 53280,11:POKE 53281,12:PRINT "[147]";CHR$(142) 2 PRINT TAB(12) "[151]LYNX DECOMPILER" 3 PRINT TAB(12) "[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]" 4 PRINT TAB(9) "(C) 1989 WILL CORLEY" 5 DIM S$(5),T$(145),PN$(145),FT(145),FS(145),BL(145),LN(145) 6 DIM RT(145),RL(145),RS(145),LT(145),LS(145),ZT(145),ZS(145) 7 DIM BT(6,120),BS(6,120),TS(6),SS(6) 8 K$=CHR$(0) 9 SD$=" 8=SOURCE DRIVE":SD=VAL(SD$) 10 BA=193*256:TEM=49152 11 FOR X=0 TO 40:READ Y:POKE X+TEM,Y:NEXT X 12 HD$="":FOR X=1 TO 94:READ Y:HD$=HD$+CHR$(Y):NEXT X 13 INPUT "INSERT DISK";A$ 14 OPEN 15,SD,15,"I0":GOSUB 229 15 OPEN 2,SD,2,"#":GOSUB 229 16 T=18:S=1:N=0:BT=N:W=N 17 PRINT "[145][Y[146]][151]ES [N[146]][151]O [A[146]][151]UTO [G[146]][151]O [E[146]][151]XIT" 18 GOSUB 176:X=0 19 ZX=X*32:F$="":C=PEEK(BA+2+ZX) 20 IF (C AND 128)<> 128 THEN 41 21 C=(C AND 15):IF C=0 THEN 41 22 IF (C=3 OR C=4) THEN 41 23 GOSUB 179 24 DT=PEEK(BA+3+ZX):DS=PEEK(BA+4+ZX) 25 GOSUB 184 26 Y=1 27 IF MID$(F$,Y,4)=".LNX" THEN 30 28 Y=Y+1:IF Y>13 THEN 41 29 GOTO 27 30 GOSUB 187 31 POKE 212,1:PRINT F$:POKE 212,0 32 PRINT "[145]";TAB(17) T$ 33 IF W=1 THEN A$="Y":GOTO 35 34 POKE 198,0:WAIT 198,1:GET A$ 35 IF A$="Y" THEN X=8:T=0 36 IF A$="G" THEN PRINT "[145][145]":GOTO 43 37 IF A$="A" THEN W=1:GOTO 33 38 IF A$="E" THEN CLOSE 2:CLOSE 15:END 39 IF A$<>"Y" THEN PRINT "[145][145]":GOTO 41 40 GOSUB 189 41 X=X+1:IF X<8 THEN 19 42 IF T<>0 THEN 18 43 CLOSE 2:CLOSE 15 44 PRINT " " 45 OPEN 15,SD,15,"UJ" 46 TI$="000000":WAIT 162,128 47 GET#15,A$:IF ST<>64 THEN 47 48 CLOSE 15 49 IF N=0 THEN END 50 GETA$:IF A$="E" THEN END 51 BL(N+1)=0 52 GOSUB 247:OPEN 15,SD,15,"I0":GOSUB 229 53 OPEN 2,SD,2,"0:"+PN$(1)+","+T$(1)+",R" 54 GOSUB 229 55 PRINT "READING HEADER" 56 BL=BL(1):B$="" 57 IF ZR=0 THEN 60 58 GET#2,A$:A$=CHR$(ASC(A$+K$)):IF A$<>CHR$(13) THEN B$=B$+A$:GOTO 58 59 IF B$<>HD$ THEN 244 60 GOSUB 239:BL(1)=VAL(A$):BV=VAL(A$) 61 INPUT#2,N:N=N+1 62 FOR X=2 TO N 63 PN$(X)="":Y=1 64 GET#2,D$:IF ASC(D$)=13 THEN 66 65 PN$(X)=PN$(X)+D$:Y=Y+1:IF Y<18 THEN 64 66 INPUT#2,BL(X):BV=BV+BL(X):INPUT#2,T$(X) 67 IF T$(X)="R" THEN INPUT#2,RL(X) 68 IF (RZ=0 AND X=N) THEN 70 69 INPUT#2,LN(X) 70 NEXT X 71 GOSUB 229:CLOSE 2:CLOSE 15 72 IF BV=BL OR BV=BL-1 THEN 74 73 GOTO 226 74 PRINT 75 OPEN 15,SD,15,"I0":GOSUB 229:OPEN 2,SD,2,"#":GOSUB 229 76 T=FT(1):S=FS(1) 77 FOR Z=1 TO N:PRINT "UNLINKING "PN$(Z) 78 IF BL(Z)=0 THEN 93 79 IF T$(Z)="R" THEN 128 80 IF (Z=N AND RZ=0) THEN 93 81 FOR X=1 TO BL(Z) 82 PRINT#15,"U1";2;0;T;S:GOSUB 229:PRINT#15,"B-P";2;0 83 T1=T:S1=S 84 GET#2,D$:T=ASC(D$+K$) 85 GET#2,D$:S=ASC(D$+K$) 86 NEXT X 87 Y=Z+1 88 IF BL(Y)<>0 THEN FT(Y)=T:FS(Y)=S:GOTO 90 89 Y=Y+1:IF Y 128 THEN 107 101 C=(C AND 15):IF C=0 THEN 107 102 GOSUB 179 103 DT=PEEK(BA+3+ZX):DS=PEEK(BA+4+ZX) 104 GOSUB 184 105 GOSUB 187 106 GOSUB 189 107 NEXT X 108 IF T<>0 THEN 98 109 Z=2 110 C$=K$+K$+K$+K$+K$+K$:ND=1 111 A$="" 112 FOR X=0 TO 7 113 IF BL(Z)=0 THEN FT(Z)=18:FS(Z)=1 114 IF T$(Z)="S" THEN D=129 115 IF T$(Z)="P" THEN D=130 116 IF T$(Z)="U" THEN D=131 117 IF T$(Z)="R" THEN D=132 118 A$=A$+CHR$(D)+CHR$(FT(Z))+CHR$(FS(Z))+PN$(Z) 119 GOSUB 200 120 IF T$(Z)="R" THEN B$=CHR$(RT(Z))+CHR$(RS(Z))+CHR$(RL(Z)) 121 GOSUB 207 122 IF Z>N THEN 124 123 NEXT X 124 GOSUB 213 125 IF Z>N THEN CLOSE 2:GOTO 127 126 GOTO 111 127 CLOSE 15:END 128 GOSUB 233:RT(Z)=T:RS(Z)=S 129 FOR X=1 TO SS:TS(X)=T:SS(X)=S 130 PRINT#15,"U1";2;0;T;S:GOSUB 229:PRINT#15,"B-P";2;0 131 T1=T:S1=S 132 GET#2,D$:T=ASC(D$+K$) 133 GET#2,D$:S=ASC(D$+K$) 134 NEXT X 135 FT(Z)=T:FS(Z)=S 136 PRINT#15,"B-P";2;0 137 PRINT#2,K$;K$; 138 PRINT#15,"U2";2;0;T1;S1:GOSUB 229 139 RR=1 140 SN=1 141 FOR X=1 TO BL(Z)-SS 142 BT(SN,RR)=T:BS(SN,RR)=S 143 PRINT#15,"U1";2;0;T;S:GOSUB 229:PRINT#15,"B-P";2;0 144 T1=T:S1=S 145 GET#2,D$:T=ASC(D$+K$) 146 GET#2,D$:S=ASC(D$+K$) 147 RR=RR+1:IF RR>120 THEN SN=SN+1:RR=1 148 NEXT X 149 RR=RR-1:IF RR=0 THEN RR=120 150 Y=Z+1 151 IF BL(Y)<>0 THEN 154 152 Y=Y+1:IF Y0 THEN T=FT(Y):S=FS(Y):GOTO 93 174 Y=Y+1:IF Y7 THEN A$=A$+K$+K$ 212 Z=Z+1:RETURN 213 IF LEN(A$)<254 THEN A$=A$+K$:GOTO 213 214 S=ND 215 ND=ND+3 216 IF ND>18 THEN ND=ND-17 217 PRINT#15,"B-P";2;0 218 IF Z>N THEN PRINT#2,K$;CHR$(255);:GOTO 220 219 PRINT#2,CHR$(18);CHR$(ND); 220 PRINT#2,A$; 221 PRINT#15,"U2";2;0;18;S:GOSUB 229 222 RETURN 223 PRINT#15,"U1";2;0;T;S:GOSUB 229 224 PRINT#15,"B-P";2;0:GOSUB 229 225 RETURN 226 PRINT "FILE LENGTH ERROR" 227 CLOSE 2:CLOSE 15 228 POKE 198,0:WAIT 198,1:END 229 INPUT#15,E,E$,ET,ES:IF E>19 THEN CLOSE 2:CLOSE 3:GOTO 231 230 RETURN 231 PRINT E;E$;ET;ES 232 END 233 IF BL(Z)<122 THEN SS=1:RETURN 234 IF BL(Z)<243 THEN SS=2:RETURN 235 IF BL(Z)<364 THEN SS=3:RETURN 236 IF BL(Z)<485 THEN SS=4:RETURN 237 IF BL(Z)<606 THEN SS=5:RETURN 238 SS=6:RETURN 239 A$="":FOR X=1 TO 28:GET#2,B$:A$=A$+B$:NEXT:GET#2,B$ 240 B$="*LYNX":X=1:RZ=0 241 IF MID$(A$,X,5)=B$ THEN RZ=1:RETURN 242 IF MID$(A$,X,4)="LYNX" THEN RETURN 243 X=X+1:IF X<22 THEN 241 244 CLOSE 2:CLOSE 15 245 PRINT "NOT A LYNXED FILE" 246 POKE 198,0:WAIT 198,1:END 247 OPEN 15,SD,15,"I0":GOSUB 229 248 OPEN 2,SD,2,"0:"+PN$(1)+","+T$(1)+",R":GOSUB 229 249 GET#2,A$:A=ASC(A$+K$) 250 GET#2,A$:B=ASC(A$+K$) 251 ZR=0:IF (A=1 AND B=8) THEN ZR=1 252 CLOSE 2:CLOSE 15:RETURN 253 DATA 162,2,32,198,255,160,0,32,228,255 254 DATA 145,251,200,208,248,32,204,255,96,162 255 DATA 2,32,198,255,162,25,160,0,32,228 256 DATA 255,145,251,200,202,208,247,32,204,255 257 DATA 96 258 DATA 1,8,91,8,10,0,151,53,51,50 259 DATA 56,48,44,48,58,151,53,51,50,56 260 DATA 49,44,48,58,151,54,52,54,44,194 261 DATA 40,49,54,50,41,58,153,34,147,17 262 DATA 17,17,17,17,17,17,17,34,58,153 263 DATA 34,32,32,32,32,32,85,83,69,32 264 DATA 76,89,78,88,32,84,79,32,68,73 265 DATA 83,83,79,76,86,69,32,84,72,73 266 DATA 83,32,70,73,76,69,34,58,137,49 267 DATA 48,0,0,0